#pragma once

class SAXContentHandlerImpl : public ISAXContentHandler  
{
public:
  SAXContentHandlerImpl();
  virtual ~SAXContentHandlerImpl();

  HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, VOID __RPC_FAR* __RPC_FAR* ppvObject);
  ULONG STDMETHODCALLTYPE AddRef(VOID);
  ULONG STDMETHODCALLTYPE Release(VOID);

  virtual HRESULT STDMETHODCALLTYPE putDocumentLocator(ISAXLocator __RPC_FAR* pLocator);
  
  virtual HRESULT STDMETHODCALLTYPE startDocument(VOID);
  virtual HRESULT STDMETHODCALLTYPE endDocument(VOID);
  
  virtual HRESULT STDMETHODCALLTYPE startPrefixMapping(CONST WCHAR __RPC_FAR* pwchPrefix, INT cchPrefix, CONST WCHAR __RPC_FAR* pwchUri, INT cchUri);
  virtual HRESULT STDMETHODCALLTYPE endPrefixMapping(CONST WCHAR __RPC_FAR* pwchPrefix, INT cchPrefix);
  
  virtual HRESULT STDMETHODCALLTYPE startElement(CONST WCHAR __RPC_FAR* pwchNamespaceUri, INT cchNamespaceUri, CONST WCHAR __RPC_FAR* pwchLocalName, INT cchLocalName, CONST WCHAR __RPC_FAR* pwchRawName, INT cchRawName, ISAXAttributes __RPC_FAR* pAttributes);
  virtual HRESULT STDMETHODCALLTYPE endElement(CONST WCHAR __RPC_FAR* pwchNamespaceUri, INT cchNamespaceUri, CONST WCHAR __RPC_FAR* pwchLocalName, INT cchLocalName, CONST WCHAR __RPC_FAR* pwchRawName, INT cchRawName);
  
  virtual HRESULT STDMETHODCALLTYPE characters(CONST WCHAR __RPC_FAR* pwchChars, INT cchChars);
  
  virtual HRESULT STDMETHODCALLTYPE ignorableWhitespace(CONST WCHAR __RPC_FAR* pwchChars, INT cchChars);
  
  virtual HRESULT STDMETHODCALLTYPE processingInstruction(CONST WCHAR __RPC_FAR* pwchTarget, INT cchTarget, CONST WCHAR __RPC_FAR* pwchData, INT cchData);
  
  virtual HRESULT STDMETHODCALLTYPE skippedEntity(CONST WCHAR __RPC_FAR* pwchName, INT cchName);
};